package com.haust.category.service;

import com.haust.commons.pojo.HaustResult;
import com.haust.pojo.TbContentCategory;

public interface ContentCategoryService {

    /**
     * 根据 parentId 查找 所有的内容分类
     *
     * @param parentId
     * @return
     */
    HaustResult selectContentCategoryByParentId(Long parentId);


    /**
     * 新增 内容分类
     * ：
     * 1、完整性处理
     * 2、新增内容分类名称不能为空，同级别的内容分类，不能有同名的正常状态的节点
     * 3、添加到数据库中
     *
     * @param tbContentCategory
     * @return
     */
    HaustResult insertContentCategory(TbContentCategory tbContentCategory);


    /**
     * 更新 内容分类状态为 已删除
     * ：
     * 1、删除父节点，同时递归删除所有的字节点
     * 2、当父节点的 有效子节点为 0 的时候，设置父节点的isParent=false
     *
     * @param id
     * @return
     */
    HaustResult deleteContentCategoryById(Long id);


    /**
     * 根据id修改 ，内容分类的 name
     * ：
     * 1、修改的 name不能为null 或者 空字符串
     * 2、修改 时候 不能存在 同一 级别正常状态下相同 名字的 name
     * @param id
     * @param name
     * @return
     */
    HaustResult updateContentCategory(Long id,String name);
}
